#include "player.h"
#include <QPixmap>
#include <QtMath>
#include <QDebug>

Player::Player(QGraphicsItem *parent) : QGraphicsPixmapItem(parent)
{
    // 设置玩家的图片
    setPixmap(QPixmap(":/assets/player.png").scaled(50, 50, Qt::KeepAspectRatio));

    // 设置旋转中心为图片中心
    setTransformOriginPoint(boundingRect().width() / 2, boundingRect().height() / 2);

    m_speed = 5.0; // 设置玩家移动速度
}

void Player::move(const QMap<int, bool> &keys)
{
    qreal dx = 0, dy = 0;
    // 根据按下的键计算水平和垂直方向的位移
    if (keys.value(Qt::Key_W, false)) dy -= m_speed;
    if (keys.value(Qt::Key_S, false)) dy += m_speed;
    if (keys.value(Qt::Key_A, false)) dx -= m_speed;
    if (keys.value(Qt::Key_D, false)) dx += m_speed;

    // 为了防止斜向移动速度过快（根号2倍），进行归一化处理
    if (dx != 0 && dy != 0) {
        dx /= M_SQRT2;
        dy /= M_SQRT2;
    }

    // 移动玩家
    setPos(x() + dx, y() + dy);
}

void Player::setRotationToMouse(const QPointF &mousePos)
{
    // 计算玩家到鼠标的向量
    QLineF line(pos(), mousePos);
    // 设置玩家的旋转角度，-90度是为了校准图片方向
    setRotation(-line.angle() + 90);
}
